package NM;

import java.util.ArrayDeque;

//用栈实现队列；
public class MyQueueUseStack {
    //模拟入队列操作；将队列的元素放入第一个栈中；
    //模拟出队列操作：判断第二个栈中是否有元素：①有的话，直接将第二个栈中的栈顶元素进行出队例
    //                                  ②没有的话，先将第一个栈中的元素全部放入第二个栈中，再将的第二个栈中的栈顶元素进行出队列；
    public ArrayDeque<Integer> stack1;
    public ArrayDeque<Integer> stack2;
    public MyQueueUseStack(){
        stack1=new ArrayDeque<>();
        stack2=new ArrayDeque<>();
    }
    //模拟出队列；
    public void push(int x){
        stack1.push(x);
    }
    //模拟出队例操作；
    public int pop(){
        if(empty()){
            return -1;
        }
        if(stack2.isEmpty()){
            while(!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
            return stack2.pop();

    }
    //获取队列元素；
    public int peek(){
        if(empty()){
            return -1;
        }
        if(stack2.isEmpty()){
            while(!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        return stack2.peek();
    }
//空队列；
    public boolean empty(){
        return stack1.isEmpty()&&stack2.isEmpty();
    }
}
